-- @Author: 作者QQ381990860
-- @Date:   2022-07-23 19:09:26
-- @Last Modified by:   baidwwy
-- @Last Modified time: 2024-01-18 04:55:07
local 收购出售 = class(窗口逻辑)
local tp,zts,zts1
local insert = table.insert
local floor = math.floor
local bw1 = require("gge包围盒")(0,0,50,50)
local box = 引擎.画矩形
local tos = 引擎.取金钱颜色
local mouseb = 引擎.鼠标弹起

function 收购出售:初始化(根)
    self.ID = 188
    self.x = 130
    self.y = 100
    self.xx = 0
    self.yy = 0
    self.注释 = "商店"
    self.可视 = false
    self.鼠标 = false
    self.焦点 = false
    self.可移动 = true
    local 资源 = 根.资源
    local 按钮 = 根._按钮
    local 自适应 = 根._自适应
    self.资源组 = {
        [1] = 资源:载入("pic/界面/收购栏/购买界面.png", "图片"),---主界面
        [2] = 资源:载入("pic/界面/收购栏/方格.png", "图片"),---物品北京
        [3] = 资源:载入('aaa.wdf',"网易WDF动画",0x6F88F494),
        [4] = 资源:载入('aaa.wdf',"网易WDF动画",0x10921CA7),
        [5] =自适应.创建(3,1,72,20,1,3),
    }
    self.按钮组 = {
        [1] = 按钮.创建(自适应.创建(18,4,16,16,4,3),0,0,4,true,true),--关闭
        [2] = 按钮.创建(自适应.创建(12,4,96,22,1,3),0,0,4,true,true,"卖出"),
        [3] = 按钮.创建(资源:载入('自用图标.wdf',"网易WDF动画",0x10000190),0,0,4,true,true),--关注
    }
    self.按钮组[2]:置偏移(26,0)
    for n=1,3 do
        self.按钮组[n]:绑定窗口_(self.ID)
    end
    self.控件类 = require("ggeui/加载类")()
    local 总控件 = self.控件类:创建控件('收购出售')
    总控件:置可视(true,true)
    self.输入框 = 总控件:创建输入("出售数量", 0,0,100,14,根,根.字体表.华康14)
    self.输入框:置可视(false,false)
    self.输入框:置限制字数(4)
    self.输入框:置数字模式()
    self.输入框:置光标颜色(-16777216)
    self.输入框:置文字颜色(0xFF000000)
    self.商品 = {}
    self.数量=1
    self.选中=0
    self.可收购数 = 0
    self.窗口时间 = 0
    tp = 根
    zts = 根.字体表.普通字体
    zts1 = 根.字体表.普通字体
    self.关注显示 = false
end

function 收购出售:打开(数据)
    if self.可视 then
        self.输入框:置焦点(false)
        self.输入框:置可视(false,false)
        self.商品 = {}
        self.道具 = {}
        self.选中 = 0
        self.数量 = 1
        self.可收购数 = 0
        self.可视 = false
    else

        local 格子 = tp._物品格子
        self.道具 = {}
        for i=1,80 do
            self.道具[i] = 格子.创建(0,0,i,"背包道具")
        end
        -- table.print(数据)
        -- for q=1,20 do
        --     self.道具[q]:置根(tp)
        --     self.道具[q]:置物品(数据[q])
        -- end
        self.数据=数据.道具
        insert(tp.窗口_,self)
        self.招牌名称 = 数据.名称
        self.招牌id = 数据.id
        self.招牌角色 = 数据.角色
        self.当前银子 = 数据.银子
        self.关注显示 = tp.场景.玩家[数据.id].收购关注
        self.输入框:置焦点(false)
        self.输入框:置可视(true,true)
        tp.运行时间 = tp.运行时间 + 1
        self.窗口时间 = tp.运行时间
        self.可视 = true
    end
end

function 收购出售:刷新背包道具(数据)
    self.数量=1
    self.选中=0
    self.可收购数=0
    for n=1,20 do
        self.道具[n]:置物品(nil)
        self.道具[n]:置根(tp)
        if 数据[n] ~= nil then
            self.道具[n]:置物品(数据[n])
            self.道具[n].编号 = self:检测是否收购(数据[n])
        end
    end
end

function 收购出售:检测是否收购(数据)
    local 编号 = 0
    for i=1,#self.商品 do
        if 数据.名称 == self.商品[i].名称 then
            --table.print(数据)
            if self.商品[i].重点 ~= nil and self.商品[i].重点 ~= "" then
                if 数据.名称 == "星辉石"  or 数据.名称 == "附魔宝珠" or 数据.名称 == "战魄"then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    if 数据.等级 == tonumber(tb[1]) then
                        编号 = i
                    end
                elseif 数据.名称 == "召唤兽内丹" or  数据.名称 == "高级召唤兽内丹" then
                    if 数据.特效 == self.商品[i].重点 then
                        编号 = i
                    end
                elseif 数据.名称 == "无级别宝珠" then
                    if 数据.特效 == self.商品[i].重点 then
                        编号 = i
                    end
                 elseif 数据.名称 == "玄龟板" or 数据.名称 == "阴沉木" or 数据.名称 == "麒麟血"
                    or 数据.名称 ==  "内丹" or 数据.名称 == "金凤羽" or 数据.名称 == "补天石" or 数据.名称 == "龙之筋" then
                    if 数据.五行 == self.商品[i].重点 then
                        编号 = i
                    end
                elseif 数据.名称 == "未激活的星石"  then
                    if 取星石部位(数据.子类) == self.商品[i].重点 then
                        编号 = i
                    end
                elseif 数据.名称 == "精魄灵石"  then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    if 数据.等级 == tonumber(tb[1]) and 数据.特效 == tb[2] then
                        编号 = i
                    end
                elseif 数据.名称 == "钟灵石"  then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    if 数据.等级 == tonumber(tb[1]) and 数据.技能 == tb[2] then
                        编号 = i
                    end
                elseif 数据.名称 == "百炼精铁" or 数据.名称 == "元灵晶石" then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    if 数据.子类 == tonumber(tb[1]) then
                        编号 = i
                    end
                elseif 数据.名称 == "魔兽要诀" or 数据.名称 == "高级魔兽要诀" or 数据.名称 == "特殊魔兽要诀" then
                    if 数据.附带技能 == self.商品[i].重点 then
                        编号 = i
                    end
                elseif 数据.名称 == "灵饰指南书" then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    if 数据.子类 == tonumber(tb[1]) and 数据.特效 == tb[2] then
                        编号 = i
                    end
                elseif 数据.名称 == "制造指南书" then
                    local tb = 分割文本(self.商品[i].重点, "级")
                    local 种类 = tp:取武器子类(数据.特效)
                    if 数据.子类 == tonumber(tb[1]) and 种类 == tb[2] then
                        编号 = i
                    end
                end
            else
                if 数据.名称 == "天赋符" then
                    if 数据.属性 == nil  then
                        编号 = i
                    end
                else
                    编号 = i
                end
            end
        end
        if 编号 ~= 0 then
            self.可收购数 = self.可收购数 + 1
            break
        end
    end
    return 编号
end


function 收购出售:刷新收购道具(数据)
    self.商品 = {}
    for n=1,10 do
        if 数据[n] ~= nil then
            self.商品[n] = {}
            local item = _JGE_HOT_UPDATE["item_data.js"][数据[n].名称]
            self.商品[n].模型 = tp.资源:载入(item.wp_11 ,"网易WDF动画",item.wp_12)
            self.商品[n].单价 = 数据[n].单价+0
            self.商品[n].数量 = 数据[n].数量+0
            self.商品[n].名称 = 数据[n].名称
            self.商品[n].重点 = 数据[n].重点
        end
    end
end

function 收购出售:显示(dt,x,y)
    self.焦点1 = false
    self.焦点 = false
    for i=1,3 do
        self.按钮组[i]:更新(x,y)
    end
    self.资源组[1]:显示(self.x,self.y)
    self.按钮组[1]:显示(self.x+600,self.y+4)
    self.按钮组[2]:显示(self.x+463,self.y+399,true)
    self.按钮组[3]:显示(self.x+258,self.y+63,nil,nil,nil,self.关注显示,2)
    --zts:置颜色(0xFFFFFFFF):显示(self.x+288,self.y+36,"关注")
    zts:置颜色(0xFFFFFFFF):显示(self.x+238+floor((156-zts:取宽度(self.招牌名称))/2),self.y+4,self.招牌名称)
    zts:置颜色(0xFFFFFFFF):显示(self.x+388,self.y+36,"你的道具中有"..self.可收购数.."类符合收购需求")
    zts:置颜色(0xFF202336):显示(self.x+55,self.y+34,self.招牌角色)
    zts:置颜色(0xFF202336):显示(self.x+180,self.y+34,self.招牌id)
    local xx,yy = 0,0
    for i=1,10 do
        if self.商品[i] ~= nil then
            local jx = self.x+xx*160+17
            local jy = self.y+yy*60+99
            bw1:置坐标(jx,jy)
            self.资源组[2]:显示(jx-5,jy-1)
            self.资源组[5]:显示(jx+80,jy+29)
            zts:置颜色(0xFFFFFFFF):显示(jx+50,jy+32,"单价")
            self.商品[i].模型:显示(jx-1,jy+2)
            if bw1:检查点(x,y) and not tp.消息栏焦点 and self.鼠标 then
                self.焦点 = true
                self.焦点1 = true
                self.资源组[3]:显示(jx-3,jy)
            end
            if self.商品[i].重点 ~= nil and self.商品[i].重点 ~= "" then
                box(jx-4,jy+36,jx+51,jy+50,0x7D101010)
                local xyl = math.floor((52-zts1:取宽度(self.商品[i].重点))/2)
                tp.字体表.描边字体12:置颜色(0xFFFFFF00):显示(jx+xyl,jy+35,self.商品[i].重点)
            end
            tp.字体表.描边字体:置颜色(0xFFFFFFFF):显示(jx-1,jy-1,self.商品[i].数量)
            zts:置颜色(0xFFFFFFFF):显示(jx+55,jy+8,self.商品[i].名称)
            zts1:置颜色(tos(self.商品[i].单价)):显示(jx+82,jy+33,self.商品[i].单价)
            xx = xx + 1
            if xx == 2 then
                xx = 0
                yy = yy + 1
            end
        end
    end

    local o = 0
    for h=1,4 do
        for l=1,5 do
            o = o + 1
            local jx,jy = self.x+303+l*51,self.y+12+h*51
            bw1:置坐标(jx,jy)
            self.道具[o]:置坐标(jx,jy)
            self.道具[o]:显示(dt,x,y,self.鼠标,nil,nil,nil,1,nil)
            if self.选中 == o then
                self.资源组[4]:显示(jx+2,jy)
            end
            if self.道具[o].编号 == 0 then
                tp.物品格子禁止_:显示(jx+5,jy+6)
            end

            if bw1:检查点(x,y) and not tp.消息栏焦点 and self.鼠标 then
                self.焦点 = true
                self.焦点1 = true
                self.资源组[3]:显示(jx+1,jy)
                if self.道具[o].物品 ~= nil then
                    if self.道具[o].焦点 and not tp.消息栏焦点 then
                      tp.提示:道具行囊(x,y,self.道具[o].物品)
                    end
                    if self.道具[o].编号 ~= 0 then
                        if mouseb(0) and self.选中 ~= o then
                            self.选中 = o
                            self.输入框:置文本(1)
                        elseif mouseb(0) and self.选中 == o and self.道具[o].物品.数量 ~= nil then
                            self.输入框:置文本(tonumber(self.输入框:取文本()) + 1)
                        elseif mouseb(1) and self.选中 == o and self.道具[o].物品.数量 ~= nil and tonumber(self.输入框:取文本()) > 1 then
                            self.输入框:置文本(tonumber(self.输入框:取文本()) - 1)
                        end
                    end
                end
            end
        end
    end
    if self.选中 ~= 0 then
        self.输入框:置坐标(self.x+472,self.y+314)
        self.控件类:更新(dt,x,y)
        self.控件类:显示(x,y)
        if tonumber(self.输入框:取文本()) ~= nil then
            self.数量 = self.输入框:取文本()
        else
            self.数量 = 0
        end
        local 价格 = self.商品[self.道具[self.选中].编号].单价
        zts1:置颜色(tos(价格)):显示(self.x+472,self.y+286,价格)
        zts1:置颜色(tos(价格*self.数量)):显示(self.x+472,self.y+342,价格*self.数量)
    end
    zts1:置颜色(tos(self.当前银子)):显示(self.x+472,self.y+371,self.当前银子)
    if self.按钮组[1]:事件判断() then
        self:打开()
    elseif self.按钮组[2]:事件判断() then
            if self.选中 == 0 then
                tp.提示:写入("#Y/请先选中一个要出售的道具")
            elseif self.数量 == 0 then
                tp.提示:写入("#Y/请正确输入要出售的物品数量")
            else
                JGESDK:发送(3720.7,{选中=self.选中,id=self.招牌id,编号=self.道具[self.选中].编号,单价=单价,数量=self.数量})
                --JGESDK:发送(self.选中, 27, 44, self.数量, self.道具[self.选中].编号)
            end
    elseif self.按钮组[3]:事件判断() then
        self.关注显示 = not self.关注显示
        tp.场景.玩家[self.招牌id].收购关注 = self.关注显示
    end
    if self.输入框._已碰撞 then
        self.焦点 = true
    end
end
function 收购出售:检查点(x,y)
    if self.可视 and self.资源组[1]:是否选中(x,y)  then
        return true
    else
        return false
    end
end

function 收购出售:初始移动(x,y)
    tp.运行时间 = tp.运行时间 + 1
    if not tp.消息栏焦点 then
        self.窗口时间 = tp.运行时间
    end
    if not self.焦点 then
        tp.移动窗口 = true
    end
    if self.鼠标 and  not self.焦点 then
        self.xx = x - self.x
        self.yy = y - self.y
    end
end

function 收购出售:开始移动(x,y)
    if self.鼠标 then
        self.x = x - self.xx
        self.y = y - self.yy
    end
end
return 收购出售
